"GAM5" is a currently nameless project that I started early February 2023. I made it to show that I have knowledge of things other than Unreal and to show this GAM5 is made in GameMaker instead of Unreal. It features my best artwork using Aseprite and significantly improved practices over most of my other projects.
There is a template for the players and enemies with a set of animations for walking idle and dying. Here the player character is shown. This template was made to speed up production of character art rather than starting from scratch every time.
This Project features improved artwork in every way from UI to game world. As well as a custom font which is a tad bit hard to make out here but I added some UI examples to show off the font much better. The UI is also using custom made art instead of the pre-set template that the engine goes off of.
When creating the inventory items it was decided that separately making objects for each item was impractical. Instead a constructor is used to make structs that hold the item's values and functions. These are housed mostly in the "OBJ_Item_Manager," with the exception being a macro that defined the function the items use and another object that is the inheritor of the item's values.
Another place where the constructor is used is in the menus. Instead of creating many menu objects a single menu object calls the menu struct it needs and then draws that menu dynamically depending on what's called. Below is the snippet for the pause menu from the player object showing how it's called.
The only other thing to use structs is the player and enemy stat values which work the same way and won't be shown.
In addition to the constructor events is the initialization room. This is where the managers for the structs is initialized as to prevent multiple of the same manager being created throughout play causing a memory leak. This is also where the font is loaded as well as the object that handles saving rooms.
The save room function simply checks the room for objects who's states need saved then load room puts them back in the correct positions. Think of this as destroying everything in the room then only putting back what's supposed to be in it. This ensures that items and doors are persistent between rooms.
This function and grid respectfully are used by the enemy to find the player. Currently this is placeholder but is worth mention because it can be seen as an incredibly rudimentary AI. What is happening here is that the mp_grid is looking for OBJ_Wall in a given room. The OBJ_Wall is what's used for collision and is an invisible asset. Thus a command has been added that when the player hits "alt" the map will switch to red and green blocks. red being blocked to the AI and green being passable. It then uses the path functions built into GameMaker to find a route to the player.
GAM5
Published:

Owner

GAM5

Published: